package cn.ncupyh.comptest;


import java.util.Scanner;

//水仙花数
public class NarcissisticNumber {
    public static void main(String[] args) {
        //求出0～n之间的所有“水仙花数”并输出。
        // (“水仙花数”是指一个三位数，其各位数字的立方和确好等于该数本 身，
        // 如；153＝1^3＋5^3＋3^3，则153是一个“水仙花数“。）
        Scanner s = new Scanner(System.in);
        //错误:只考虑了三位数,可是水仙花数是自幂数

//        int n = s.nextInt();//输入n
//        for (int i = 0; i <= n; i++) {
//            int sum = 0;
//            int t = i;
//            if (t / 10 == 0) {
//                if (t != t * t * t) {
//                    continue;
//                }
//            }
//            while (t / 10 != 0) {
//                int tmp = t % 10;//取个位数
//                sum += tmp * tmp * tmp;
//                t /= 10;
//            }
//            sum += t;
//            if (sum == i) {
//                System.out.println(i + "是一个水仙花数");
//            }
//
//        }

        //最优解:
        int n = s.nextInt();//输入的最大范围
        for (int i = 0; i <= n; i++) {
            int tmp = i;
            int count =0;//用来计算几位数
            //计算位数
            while (tmp != 0) {
                count++;
                tmp /= 10;
            }
            //求和
            tmp = i;
            int sum = 0;
            while (tmp != 0) {
                sum += Math.pow(tmp % 10, count);
                tmp /= 10;
            }
            if(sum == i){
                System.out.println(i+"是水仙花数");
            }
        }

    }
}
